<?php

/**
 * This is the model class for table "{{survey}}".
 *
 * The followings are the available columns in table '{{survey}}':
 * @property integer $id
 * @property integer $type
 * @property string $name
 * @property string $description
 * @property integer $create_at
 * @property integer $create_by
 * @property integer $timestamp
 */
class Survey extends CActiveRecord
{
	const STATUS_OK = 0;
	const STATUS_DELETED = 1;
	/**
	 * @return string the associated database table name
	 */
	public function tableName()
	{
		return '{{survey}}';
	}

	/**
	 * @return array validation rules for model attributes.
	 */
	public function rules()
	{
		// NOTE: you should only define rules for those attributes that
		// will receive user inputs.
		return array(
			array('type, create_at, create_by, timestamp', 'numerical', 'integerOnly'=>true),
			array('name, description', 'safe'),
			// The following rule is used by search().
			// @todo Please remove those attributes that should not be searched.
			array('id, type, name, description, create_at, create_by, timestamp', 'safe', 'on'=>'search'),
		);
	}

	/**
	 * @return array relational rules.
	 */
	public function relations()
	{
		// NOTE: you may need to adjust the relation name and the related
		// class name for the relations automatically generated below.
		return array(
		);
	}

	/**
	 * @return array customized attribute labels (name=>label)
	 */
	public function attributeLabels()
	{
		return array(
			'id' => 'ID',
			'type' => 'Type',
			'name' => 'Name',
			'description' => 'Description',
			'create_at' => 'Create At',
			'create_by' => 'Create By',
			'timestamp' => 'Timestamp',
		);
	}

	public function saveQuestion($arr)
	{
		if(isset($arr['question_id'])){
			//更新题目
			$modelQuestion = SurveyQuestion::model()->loadByPk($array['question_id']);
			//$modelQuestion->
			$modelQuestion->updateOption();
			$modelQuestion->createOption();
			$modelQuestion->deleteQption();
		}else{
			//添加题目
			$modelQuestion = new SurveyQuestion;
			$modelQuestion->init();
		
		}
	}

	public function getQuestions()
	{
		$id = $this->id;
		$modelQuestion = SurveyQuestion::model()->findAll('survey_id='.$id." AND status=".Survey::STATUS_OK);
		$res = array();
		
		foreach ($modelQuestion as $key => $value) {
			$question = $value->attributes;
			$question['options'] = array();
			$options = SurveyQuestionOption::model()->findAll('survey_question_id='.$question['id']." AND status=".Survey::STATUS_OK);
			foreach ($options as $k => $v) {
				$question['options'][] = $v->attributes;
			}
			$res[] = $question;
		}
		return $res;
	}

	public function getLimit()
	{
		$id = $this->id;
	}

	public function setAnswer($res)
	{
		$options = $res['options'];
		foreach ($options as $key => $value) {
			$id = $value;
			$modelOption = SurveyQuestionOption::model()->findByPk($id);
			$modelOption->attributes = array(
				'count'=>$modelOption->attributes['count'],
				);
			$modelOption->save();
		}

		$modelAnswer = new SurveyAnswer;
		$modelAnswer->attributes = array(
			'survey_id'=>$this->id,
			'uid'=>yii::app()->user->id,
			'content'=>json_encode($res),
			);
		$modelAnswer->save();
		return $modelAnswer->attributes['id'];

		
	}

	public function getAnswer($answerId)
	{
		$modelAnswer = SurveyAnswer::model()->findByPk($answerId);
		$res = json_decode($modelAnswer->attributes['content']);
		$answerQuestions = $res['questions'];
		$answerOptions = $res['options'];
		return $res;
	}

	/**
	 * Retrieves a list of models based on the current search/filter conditions.
	 *
	 * Typical usecase:
	 * - Initialize the model fields with values from filter form.
	 * - Execute this method to get CActiveDataProvider instance which will filter
	 * models according to data in model fields.
	 * - Pass data provider to CGridView, CListView or any similar widget.
	 *
	 * @return CActiveDataProvider the data provider that can return the models
	 * based on the search/filter conditions.
	 */
	public function search()
	{
		// @todo Please modify the following code to remove attributes that should not be searched.

		$criteria=new CDbCriteria;

		$criteria->compare('id',$this->id);
		$criteria->compare('type',$this->type);
		$criteria->compare('name',$this->name,true);
		$criteria->compare('description',$this->description,true);
		$criteria->compare('create_at',$this->create_at);
		$criteria->compare('create_by',$this->create_by);
		$criteria->compare('timestamp',$this->timestamp);

		return new CActiveDataProvider($this, array(
			'criteria'=>$criteria,
		));
	}

	/**
	 * Returns the static model of the specified AR class.
	 * Please note that you should have this exact method in all your CActiveRecord descendants!
	 * @param string $className active record class name.
	 * @return Survey the static model class
	 */
	public static function model($className=__CLASS__)
	{
		return parent::model($className);
	}
}
